home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #9 / Amiga Plus CD - 2004 - No. 09.iso / amigaplus / tools / amigaos4_only / ifxlite / imagefx3 / rexx / wimp.ifx < prev    next >
Text File  |  2004-08-03  |  4KB  |  197 lines

  1. /*
  2.  * $VER: WIMP 1.00.00 (24.9.92)
  3.  *
  4.  * Arexx program for the ImageFX image processing system.
  5.  * Written by Thomas Krehbiel
  6.  *
  7.  * WIMP - Wildcard ImageFX Multi Processor
  8.  *
  9.  * Given a wildcard pattern, this program will perform user-supplied
  10.  * commands on the series and output 24-bit frames or rendered frames.
  11.  */
  12.  
  13. OPTIONS RESULTS
  14.  
  15. SIGNAL ON BREAK_C
  16.  
  17. inpattern = GETCLIP('WIMP_In')
  18. outpattern = GETCLIP('WIMP_Out')
  19. prepcmd = GETCLIP('WIMP_Prep')
  20. proccmd = GETCLIP('WIMP_Proc')
  21. loadopt = GETCLIP('WIMP_LoadOpt')
  22.  
  23. Gadget.1 = 'S/120/20/Input Pattern:/'inpattern
  24. Gadget.2 = 'S/120/35/Output Pattern:/'outpattern
  25. Gadget.3 = 'S/120/50/Prep:/'prepcmd
  26. Gadget.4 = 'S/120/65/Proc:/'proccmd
  27. Gadget.5 = 'S/120/80/Load Options:/'loadopt
  28. Gadget.6 = 'C/120/95/Output:/3/24-Bit/Rendered/ANIM'
  29.  
  30. ComplexRequest '"WIMP - Wildcard ImageFX Multi Processor"' 6 Gadget 300 130
  31. IF rc ~= 0 THEN EXIT
  32.  
  33. inpattern = result.1
  34. outpattern = result.2
  35. prepcmd = result.3
  36. proccmd = result.4
  37. loadopt = result.5
  38. output = result.6
  39.  
  40. CALL SETCLIP('WIMP_In', inpattern)
  41. CALL SETCLIP('WIMP_Out', outpattern)
  42. CALL SETCLIP('WIMP_Prep', prepcmd)
  43. CALL SETCLIP('WIMP_Proc', proccmd)
  44. CALL SETCLIP('WIMP_LoadOpt', loadopt)
  45.  
  46. i = INDEX(outpattern, '#?')
  47. IF i ~= 0 THEN DO
  48.    preout = LEFT(outpattern, i-1)
  49.    postout = SUBSTR(outpattern, i+2)
  50.    END
  51. ELSE DO
  52.    i = INDEX(outpattern, '*')
  53.    IF i ~= 0 THEN DO
  54.       preout = LEFT(outpattern, i-1)
  55.       postout = SUBSTR(outpattern, i+1)
  56.       END
  57.    END
  58.  
  59. /* determine input directory path */
  60. indir = ''
  61. i = LASTPOS('/', inpattern)
  62. IF i = 0 THEN i = LASTPOS(':', inpattern)
  63. IF i ~= 0 THEN DO
  64.    indir = LEFT(inpattern, i)
  65.    END
  66.  
  67. /* list all files matching the pattern */
  68. ADDRESS COMMAND 'c:List >RAM:__WIMP_TEMP__ NOHEAD LFORMAT='indir'%s' inpattern
  69. IF rc ~= 0 THEN DO
  70.    RequestNotify 'Error listing pattern files.'
  71.    EXIT
  72.    END
  73.  
  74. /* sort alphabetically */
  75. ADDRESS COMMAND 'c:Sort RAM:__WIMP_TEMP__ TO RAM:__WIMP_LIST__'
  76. ADDRESS COMMAND 'c:Delete RAM:__WIMP_TEMP__ QUIET'
  77.  
  78. IF prepcmd ~= "" THEN INTERPRET prepcmd
  79. IF rc ~= 0 THEN EXIT
  80.  
  81. IF ~OPEN(infile, 'RAM:__WIMP_LIST__', 'Read') THEN DO
  82.    RequestNotify 'Cannot read pattern files.'
  83.    EXIT
  84.    END
  85.  
  86. Undo Off
  87.  
  88. LockInput
  89.  
  90.  
  91. IF output = 2 THEN DO
  92.    LockRange 0 ON
  93.    CreateBuffer 320 200
  94.    IF proccmd ~= "" THEN INTERPRET proccmd
  95.    IF rc ~= 0 THEN EXIT
  96.    Render Go
  97.    SaveRenderedAs ANIM '"'outpattern'"' Append Keep
  98.    END
  99.  
  100. f = 1
  101.  
  102. /* go through the list one by one */
  103. DO WHILE ~EOF(infile)
  104.  
  105.    nextfile = READLN(infile)
  106.  
  107.    IF nextfile ~= "" THEN DO
  108.  
  109.       Render Close
  110.  
  111.       files.f = nextfile; f = f + 1
  112.  
  113.       Message nextfile
  114.  
  115.       LoadBuffer '"'nextfile'"' Force loadopt
  116.       IF rc ~= 0 THEN DO
  117.          RequestNotify 'Error loading file ('rc').'
  118.          LEAVE
  119.          END
  120.  
  121.       Redraw Off
  122.  
  123.       sub = LASTPOS('/', nextfile)
  124.       IF sub = 0 THEN sub = LASTPOS(':', nextfile)
  125.       sub = sub + 1
  126.       ext = LASTPOS('.', nextfile)
  127.       IF ext = 0 THEN ext = LENGTH(nextfile) + 1
  128.  
  129.       substr = SUBSTR(nextfile, sub, ext - sub)    /* base filename, no ext */
  130.  
  131.       IF proccmd ~= "" THEN INTERPRET proccmd
  132.       IF rc ~= 0 THEN LEAVE
  133.  
  134.       Redraw On
  135.  
  136.       SELECT
  137.          WHEN output = 0 THEN DO
  138.             SaveBufferAs ILBM '"'preout||substr||postout'"'
  139.             END
  140.          WHEN output = 1 THEN DO
  141.             Render Go
  142.             SaveRenderedAs ILBM '"'preout||substr||postout'"'
  143.             Render Close
  144.             END
  145.          WHEN output = 2 THEN DO
  146.             Render Go
  147.             SaveRenderedAs ANIM '"'outpattern'"' Append Keep
  148.             SaveRenderedAs ANIM '"'outpattern'"' Append Keep
  149.             END
  150.          OTHERWISE NOP
  151.          END
  152.  
  153.       END
  154.  
  155.    END
  156.  
  157. CALL CLOSE(infile)
  158.  
  159. IF output = 2 THEN DO
  160.    CreateBuffer 320 200
  161.    IF proccmd ~= "" THEN INTERPRET proccmd
  162.    Render Go
  163.    SaveRenderedAs ANIM '"'outpattern'"' Append Keep
  164.    LoadBuffer '"'files.1'"' Force loadopt
  165.    IF proccmd ~= "" THEN INTERPRET proccmd
  166.    Render Go
  167.    SaveRenderedAs ANIM '"'outpattern'"' Append Keep
  168.    LoadBuffer '"'files.2'"' Force loadopt
  169.    IF proccmd ~= "" THEN INTERPRET proccmd
  170.    Render Go
  171.    SaveRenderedAs ANIM '"'outpattern'"' Append Keep
  172.    SaveRenderedAs ANIM '"'outpattern'"' Close
  173.    Render Close
  174.    END
  175.  
  176.  
  177. ADDRESS COMMAND 'c:Delete RAM:__WIMP_LIST__ QUIET'
  178.  
  179. KillBuffer Force
  180. UnlockInput
  181. Undo On
  182.  
  183. EXIT
  184.  
  185. BREAK_C:
  186.  
  187.    IF output = 2 THEN DO
  188.       Render Go
  189.       SaveRenderedAs ANIM junk Close
  190.       END
  191.  
  192.    KillBuffer Force
  193.    UnlockInput
  194.    Undo On
  195.  
  196.    EXIT
  197.